home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / nss / nss.h < prev    next >
C/C++ Source or Header  |  2006-04-20  |  9KB  |  209 lines

  1. /*
  2.  * NSS utility functions
  3.  *
  4.  * ***** BEGIN LICENSE BLOCK *****
  5.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  6.  *
  7.  * The contents of this file are subject to the Mozilla Public License Version
  8.  * 1.1 (the "License"); you may not use this file except in compliance with
  9.  * the License. You may obtain a copy of the License at
  10.  * http://www.mozilla.org/MPL/
  11.  *
  12.  * Software distributed under the License is distributed on an "AS IS" basis,
  13.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  14.  * for the specific language governing rights and limitations under the
  15.  * License.
  16.  *
  17.  * The Original Code is the Netscape security libraries.
  18.  *
  19.  * The Initial Developer of the Original Code is
  20.  * Netscape Communications Corporation.
  21.  * Portions created by the Initial Developer are Copyright (C) 1994-2000
  22.  * the Initial Developer. All Rights Reserved.
  23.  *
  24.  * Contributor(s):
  25.  *
  26.  * Alternatively, the contents of this file may be used under the terms of
  27.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  28.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  29.  * in which case the provisions of the GPL or the LGPL are applicable instead
  30.  * of those above. If you wish to allow use of your version of this file only
  31.  * under the terms of either the GPL or the LGPL, and not to allow others to
  32.  * use your version of this file under the terms of the MPL, indicate your
  33.  * decision by deleting the provisions above and replace them with the notice
  34.  * and other provisions required by the GPL or the LGPL. If you do not delete
  35.  * the provisions above, a recipient may use your version of this file under
  36.  * the terms of any one of the MPL, the GPL or the LGPL.
  37.  *
  38.  * ***** END LICENSE BLOCK ***** */
  39. /* $Id: nss.h,v 1.46 2005/11/22 01:58:35 christophe.ravel.bugs%sun.com Exp $ */
  40.  
  41. #ifndef __nss_h_
  42. #define __nss_h_
  43.  
  44. #include "seccomon.h"
  45.  
  46. SEC_BEGIN_PROTOS
  47.  
  48. /*
  49.  * NSS's major version, minor version, patch level, and whether
  50.  * this is a beta release.
  51.  *
  52.  * The format of the version string should be
  53.  *     "<major version>.<minor version>[.<patch level>] [<Beta>]"
  54.  */
  55. #define NSS_VERSION  "3.11"
  56. #define NSS_VMAJOR   3
  57. #define NSS_VMINOR   11
  58. #define NSS_VPATCH   0
  59. #define NSS_BETA     PR_FALSE
  60.  
  61.  
  62. /*
  63.  * Return a boolean that indicates whether the underlying library
  64.  * will perform as the caller expects.
  65.  *
  66.  * The only argument is a string, which should be the verson
  67.  * identifier of the NSS library. That string will be compared
  68.  * against a string that represents the actual build version of
  69.  * the NSS library.  It also invokes the version checking functions
  70.  * of the dependent libraries such as NSPR.
  71.  */
  72. extern PRBool NSS_VersionCheck(const char *importedVersion);
  73.  
  74. /*
  75.  * Open the Cert, Key, and Security Module databases, read only.
  76.  * Initialize the Random Number Generator.
  77.  * Does not initialize the cipher policies or enables.
  78.  * Default policy settings disallow all ciphers.
  79.  */
  80. extern SECStatus NSS_Init(const char *configdir);
  81.  
  82. /*
  83.  * Returns whether NSS has already been initialized or not.
  84.  */
  85. extern PRBool NSS_IsInitialized(void);
  86.  
  87. /*
  88.  * Open the Cert, Key, and Security Module databases, read/write.
  89.  * Initialize the Random Number Generator.
  90.  * Does not initialize the cipher policies or enables.
  91.  * Default policy settings disallow all ciphers.
  92.  */
  93. extern SECStatus NSS_InitReadWrite(const char *configdir);
  94.  
  95. /*
  96.  * Open the Cert, Key, and Security Module databases, read/write.
  97.  * Initialize the Random Number Generator.
  98.  * Does not initialize the cipher policies or enables.
  99.  * Default policy settings disallow all ciphers.
  100.  *
  101.  * This allows using application defined prefixes for the cert and key db's
  102.  * and an alternate name for the secmod database. NOTE: In future releases,
  103.  * the database prefixes my not necessarily map to database names.
  104.  *
  105.  * configdir - base directory where all the cert, key, and module datbases live.
  106.  * certPrefix - prefix added to the beginning of the cert database example: "
  107.  *             "https-server1-"
  108.  * keyPrefix - prefix added to the beginning of the key database example: "
  109.  *             "https-server1-"
  110.  * secmodName - name of the security module database (usually "secmod.db").
  111.  * flags - change the open options of NSS_Initialize as follows:
  112.  *     NSS_INIT_READONLY - Open the databases read only.
  113.  *     NSS_INIT_NOCERTDB - Don't open the cert DB and key DB's, just 
  114.  *             initialize the volatile certdb.
  115.  *     NSS_INIT_NOMODDB  - Don't open the security module DB, just 
  116.  *            initialize the     PKCS #11 module.
  117.  *      NSS_INIT_FORCEOPEN - Continue to force initializations even if the 
  118.  *             databases cannot be opened.
  119.  *      NSS_INIT_NOROOTINIT - Don't try to look for the root certs module
  120.  *            automatically.
  121.  *      NSS_INIT_OPTIMIZESPACE - Use smaller tables and caches.
  122.  *      NSS_INIT_PK11THREADSAFE - only load PKCS#11 modules that are
  123.  *                      thread-safe, ie. that support locking - either OS
  124.  *                      locking or NSS-provided locks . If a PKCS#11
  125.  *                      module isn't thread-safe, don't serialize its
  126.  *                      calls; just don't load it instead. This is necessary
  127.  *                      if another piece of code is using the same PKCS#11
  128.  *                      modules that NSS is accessing without going through
  129.  *                      NSS, for example the Java SunPKCS11 provider.
  130.  *      NSS_INIT_PK11RELOAD - ignore the CKR_CRYPTOKI_ALREADY_INITIALIZED
  131.  *                      error when loading PKCS#11 modules. This is necessary
  132.  *                      if another piece of code is using the same PKCS#11
  133.  *                      modules that NSS is accessing without going through
  134.  *                      NSS, for example Java SunPKCS11 provider.
  135.  *      NSS_INIT_NOPK11FINALIZE - never call C_Finalize on any
  136.  *                      PKCS#11 module. This may be necessary in order to
  137.  *                      ensure continuous operation and proper shutdown
  138.  *                      sequence if another piece of code is using the same
  139.  *                      PKCS#11 modules that NSS is accessing without going
  140.  *                      through NSS, for example Java SunPKCS11 provider.
  141.  *                      The following limitation applies when this is set :
  142.  *                      SECMOD_WaitForAnyTokenEvent will not use
  143.  *                      C_WaitForSlotEvent, in order to prevent the need for
  144.  *                      C_Finalize. This call will be emulated instead.
  145.  *      NSS_INIT_RESERVED - Currently has no effect, but may be used in the
  146.  *                      future to trigger better cooperation between PKCS#11
  147.  *                      modules used by both NSS and the Java SunPKCS11
  148.  *                      provider. This should occur after a new flag is defined
  149.  *                      for C_Initialize by the PKCS#11 working group.
  150.  *      NSS_INIT_COOPERATE - Sets 4 recommended options for applications that
  151.  *                      use both NSS and the Java SunPKCS11 provider.
  152.  *
  153.  * Also NOTE: This is not the recommended method for initializing NSS. 
  154.  * The prefered method is NSS_init().
  155.  */
  156. #define NSS_INIT_READONLY    0x1
  157. #define NSS_INIT_NOCERTDB    0x2
  158. #define NSS_INIT_NOMODDB    0x4
  159. #define NSS_INIT_FORCEOPEN    0x8
  160. #define NSS_INIT_NOROOTINIT     0x10
  161. #define NSS_INIT_OPTIMIZESPACE  0x20
  162. #define NSS_INIT_PK11THREADSAFE   0x40
  163. #define NSS_INIT_PK11RELOAD       0x80
  164. #define NSS_INIT_NOPK11FINALIZE   0x100
  165. #define NSS_INIT_RESERVED         0x200
  166.  
  167. #define NSS_INIT_COOPERATE NSS_INIT_PK11THREADSAFE | \
  168.         NSS_INIT_PK11RELOAD | \
  169.         NSS_INIT_NOPK11FINALIZE | \
  170.         NSS_INIT_RESERVED
  171.  
  172. #ifdef macintosh
  173. #define SECMOD_DB "Security Modules"
  174. #else
  175. #define SECMOD_DB "secmod.db"
  176. #endif
  177.  
  178. extern SECStatus NSS_Initialize(const char *configdir, 
  179.     const char *certPrefix, const char *keyPrefix, 
  180.     const char *secmodName, PRUint32 flags);
  181.  
  182. /*
  183.  * initialize NSS without a creating cert db's, key db's, or secmod db's.
  184.  */
  185. SECStatus NSS_NoDB_Init(const char *configdir);
  186.  
  187. /* 
  188.  * Close the Cert, Key databases.
  189.  */
  190. extern SECStatus NSS_Shutdown(void);
  191.  
  192. /*
  193.  * set the PKCS #11 strings for the internal token.
  194.  */
  195. void PK11_ConfigurePKCS11(const char *man, const char *libdes, 
  196.     const char *tokdes, const char *ptokdes, const char *slotdes, 
  197.     const char *pslotdes, const char *fslotdes, const char *fpslotdes,
  198.         int minPwd, int pwRequired);
  199.  
  200. /*
  201.  * Dump the contents of the certificate cache and the temporary cert store.
  202.  * Use to detect leaked references of certs at shutdown time.
  203.  */
  204. void nss_DumpCertificateCacheInfo(void);
  205.  
  206. SEC_END_PROTOS
  207.  
  208. #endif /* __nss_h_ */
  209.